package com.efuture.array;
/**
 * @author zss
 * 选择排序
 * 原理:从一堆数据中找到最小的数据，然后把最小的数据跟比较数据里的最前面的元素交换位置
 * 选择排序效率比冒泡程序的更高，循环比较的次数一样，但数据交换位置的次数更少
 */

public class SelectSort {
    private static int[] arrayTest = {56,23,78,12,99,45,28,87,33};


    public static void main(String[] args) {
        selectSort();

    }

    private static void selectSort(){
        int count =0;
        int count1 = 0;
        for(int i=0;i<arrayTest.length-1;i++){
            int min = i;
            for(int j=i+1;j<arrayTest.length;j++){
                count++;
               if(arrayTest[j]<arrayTest[min]){
                   min = j;
               }
            }
            if(i!=min){
                //交换位置
                count1++;
                int temp = arrayTest[min];
                arrayTest[min] = arrayTest[i];
                arrayTest[i]=temp;
            }
        }
        System.out.println("循环比较次数:"+count);
        System.out.println("交换次数:"+count1);
        for (int x=0;x<arrayTest.length;x++){
            System.out.println(arrayTest[x]);
        }

    }

}
